package com.byron.media.server.logic;

import com.byron.media.server.MediaServer;
import com.byron.media.server.client.MediaClient;
import com.byron.media.server.enums.Args;
import com.byron.media.server.handlers.MediaSession;
import com.byron.media.server.model.MediaHeaderObj;
import io.netty.channel.ChannelHandlerContext;
import org.apache.commons.lang.StringUtils;

/**
 * cmd = reg
 */
public class RegHandler implements IMediaHandler {

    @Override
    public void handle(MediaSession session, ChannelHandlerContext ctx, MediaHeaderObj header) {

        if(header.getArgs() == null){
            return;
        }
        String groupName = (String) header.getArgs().get(Args.GROUP_NAME);
        boolean sender = (boolean) header.getArgs().getOrDefault(Args.SENDER, false);
        boolean proxy = (boolean) header.getArgs().getOrDefault(Args.PROXY, false);        // 是否从代理服务器中发送
        String url = (String)header.getArgs().getOrDefault(Args.RTSP, "");

        // 建立拉取线程
        if(StringUtils.isNotEmpty(url)){

            return;
        }

        String device = (String) header.getDevice().get("id");

        // 防止重复注册
        if(session.isActive() && !session.isProxy()){
            return;
        }

        // 暂不处理一个用户对多个组的情况
        session.active(device, groupName, sender, proxy);

        ctx.fireChannelReadComplete();
    }
}
